var async=require("async");
var db=require("../config.js").db;
var debug=require("debug")('blog:web:read');
/*
	获取文章列表
	@param {function} callback
*/
exports.classList=function(callback){
	debug("获取文章分类列表");
	db.query('SELECT * FROM `class_list` ORDER BY `id` ASC',callback);
}

/*
	检查分类是否存在
	@param {number} id
	@param {function} callback
*/
exports.isClassExists=function(id,callback){
	debug("检查分类是否存在:%s",id);
	db.query('SELECT *FROM `class_list` WHERE `id`=? LIMIT 1',[id],function(err,ret){
		if(err)return next(err);
		callback(null,Array.isArray(ret)&& ret.length>0);
	})
}
/*
	获取指定分类信息
	@param {number} id
	@param {function} callback

*/
exports.class=function(id,callback){
	debug("获取指定分类信息:%s",id);
	db.query('SELECT * FROM `class_list` WHERE `id`=? LIMIT 1',function(err,list){
		if(err)return callback(err);
		if(!(list.length>0)) return callback(new Error("改分类不存在"));
		callback(null,list[0]);
	})
}
/*
	@获取指定文章的详细信息
	@param {string} id
	@param {function} callback

*/
exports.article = function (id, callback) {
  debug('获取指定文章的详细信息：%s', id);

  var sql = 'SELECT * FROM `article_list` AS `A`' +
            ' LEFT JOIN `article_detail` AS `B` ON `A`.`id`=`B`.`id`' +
            ' WHERE `A`.`id`=? LIMIT 1';
  db.query(sql, [id], function (err, list) {
    if (err) return callback(err);
    if (!(list.length > 0)) return callback(new Error('该文章不存在'));

    callback(null, list[0]);
  });
};
/*
	获取指定分类下的文章列表

	查询 文章列表（article_list） 左关联  文章详情表（article_detail） 
	怎么关联  ？通过 article_list 的 字段 id  和  article_detail 的id       
	查询条件是  文章列表article_list 的 class_id = 查询条件  并且按 。。。这个地方写错了吧
	 按照谁的 created_time 进行倒序排列 也就是时间越靠近现在时间的 排在前面
	@param {number} classID
	@param {number} offset
	@param {number} limit
	@param {function} callback
*/
exports.articleListByClassId = function (classId, offset, limit, callback) {
  debug('获取指定分类下的文章列表：%s, %s, %s', classId, offset, limit);

  var sql = 'SELECT * FROM `article_list` AS `A`' +
            ' LEFT JOIN `article_detail` AS `B` ON `A`.`id`=`B`.`id`' +
            ' WHERE `A`.`class_id`=?' +
            ' ORDER BY `created_time` DESC LIMIT ?,?';
  db.query(sql, [classId, offset, limit], callback);
};

/*
	获取指定标签下的文章列表
	@param {string} tag
	@param {number} offset
	@param {number} limit
	@param {function} callback

*/
exports.articleListByTag=function(tag,offset,limit,callback){
	debug("获取指定标签下的文章列表：%s,%s,%s",tag,offset,limit);
	var sql='SELECT *FROM `article_list` WHERE `id` IN ('+
	'SELECT `id` REOM `article_tag` WHERE `tag` =?'+
	'ORDER BY `create_time` DESC LIMIT';
	db.query(sql,[tag,offset,limit],callback);
}


/*
	获取指定标签下的文章数量
	@param{string} tag
	@param {function} callback
*/
exports.articleCountByTag=function(tag,calback){
	debug('获取指定标签下的文章数量:%s',tag);
	db.query('SELECT COUNT(*) AS `c` FROM `article_tag` WHERE `tag`=?',[tag],function(err,ret){
		if(err) return callback(err);
		callback(null,ret[0].c);
	})
};
